]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell: Do not use stack-allocated ClutterEvents
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 24 Sep 2020 16:19:44 +0000 (18:19 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 30 Sep 2020 20:47:11 +0000 (22:47 +0200)
All events should be allocated.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1451

src/shell-global.c

index 38b7148062156c1b7ba3bbfdce4b0a9f4540e25c..7846f73006349e47bd5c0b05ede9d978d1143358 100644 (file)
@@ -1381,31 +1381,32 @@ shell_global_sync_pointer (ShellGlobal *global)
 {
   int x, y;
   ClutterModifierType mods;
-  ClutterMotionEvent event;
+  ClutterEvent *event;
   ClutterSeat *seat;
 
   shell_global_get_pointer (global, &x, &y, &mods);
 
   seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
+  event = clutter_event_new (CLUTTER_MOTION);
 
-  event.type = CLUTTER_MOTION;
-  event.time = shell_global_get_current_time (global);
-  event.flags = CLUTTER_EVENT_FLAG_SYNTHETIC;
-  event.stage = global->stage;
-  event.x = x;
-  event.y = y;
-  event.modifier_state = mods;
-  event.axes = NULL;
-  event.device = clutter_seat_get_pointer (seat);
+  event->motion.time = shell_global_get_current_time (global);
+  event->motion.flags = CLUTTER_EVENT_FLAG_SYNTHETIC;
+  event->motion.stage = global->stage;
+  event->motion.x = x;
+  event->motion.y = y;
+  event->motion.modifier_state = mods;
+  event->motion.axes = NULL;
+  clutter_event_set_device (event, clutter_seat_get_pointer (seat));
 
   /* Leaving event.source NULL will force clutter to look it up, which
    * will generate enter/leave events as a side effect, if they are
    * needed. We need a better way to do this though... see
    * http://bugzilla.clutter-project.org/show_bug.cgi?id=2615.
    */
-  event.source = NULL;
+  clutter_event_set_source_device (event, NULL);
 
-  clutter_event_put ((ClutterEvent *)&event);
+  clutter_event_put (event);
+  clutter_event_free (event);
 }
 
 /**